package innersort;

public class InsertSort extends BaseSort {
    public static void main(String[] args) {
        int[] array = {2, 23, 25, 35, 9, 7, 1, 22, 25, 23, 16, 28, 30};
        sort(array);
    }

    public static void sort(int[] array) {
        int temp;
        for (int i = 1; i < array.length; i++) {
            temp = array[i];

            if (temp >= array[i - 1]) {
                print(array);
                continue;
            }

            for (int j = i; j >= 0; j--) {
                if (j > 0 && array[j - 1] > temp) {
                    array[j] = array[j - 1];
                    print(array, temp, j, j - 1);
                } else {
                    array[j] = temp;
                    print(array, temp, i, j);
                    break;
                }
            }
        }
    }


//    public static void main(String[] args) {
//        int array[] = {2, 23, 25, 35, 9, 7, 1, 22, 25, 23, 16, 28, 30};
//        print(array);
//        int temp;
//        for (int i = 1; i < array.length; i++) {
//            //待排元素小于有序序列的最后一个元素时，向前插入
//            if (array[i] < array[i - 1]) {
//                temp = array[i];
//                for (int j = i; j >= 0; j--) {
//                    if (j > 0 && array[j - 1] > temp) {
//                        array[j] = array[j - 1];
//                        print(array, temp, j, j - 1);
//                    } else {
//                        array[j] = temp;
//                        print(array, temp, i, j);
//                        break;
//                    }
//                }
//            }
//            print(array);
//        }
//    }
}
